package eu.floranet.arquivo.model.persistence;

import java.io.File;

/**
 * Classe de construção do ficheiro de configuração. Esta classe implementa
 * o interface {@link IPersistenceLinkFile}. Nesta classe atribui-se o ficheiro
 * na qual consta ou constará a configuração.
 * 
 * @author jmark
 *
 */
public class PersistenceLinkFile implements IPersistenceLinkFile {

	/*
	 * Variável que instancia o ficheiro.
	 * (non-javadoc)
	 */
	private File linkFile = null;

	/**
	 * Método de default de construção da classe. Ao criar esta classe neste modo
	 * as suas propriedades estão como nulas, esperando ser complementadas por valores a atribuir.
	 * 
	 */
	public PersistenceLinkFile() {

	}
	
	/**
	 * Método de construção da classe. Este método é construido
	 * com base do ficheiro onde consta ou constará as configurações.
	 * A classe ao ser instanciada atribui o valor passado aos mutators
	 * presentes na classe.
	 * 
	 * @param linkFile - File
	 */
	public PersistenceLinkFile(File linkFile) {
		setLinkFile(linkFile);
	}

	/* (non-Javadoc)
	 * @see eu.floranet.arquivo.model.persistence.IPersistenceLinkFile#setLinkFile(java.io.File)
	 */
	@Override
	public void setLinkFile(File linkFile) {
		this.linkFile = linkFile;
	}

	/* (non-Javadoc)
	 * @see eu.floranet.arquivo.model.persistence.IPersistenceLinkFile#getLinkFile()
	 */
	@Override
	public File getLinkFile() {
		return this.linkFile;
	}

	/** 
	 * Método retorna true se o ficheiro existir.
	 * 
	 * @see eu.floranet.arquivo.model.persistence.IPersistenceLinkFile#existLinkFile()
	 * IPersistenceLinkFile
	 */
	@Override
	public boolean existLinkFile() {
		if (this.linkFile.exists()) {
			return true;
		} else {
			return false;
		}
	}

	/** 
	 * Método retorna true se não contiver uma instancia.
	 * 
	 * @see eu.floranet.arquivo.model.persistence.IPersistenceLinkFile#isLinkFileEmpty()
	 * IPersistenceLinkFile
	 */
	@Override
	public boolean isLinkFileEmpty() {
		if(this.linkFile == null){
			return true;
		} else {
			return false;
		}
	}
}
